A programmable logic device (PLD) is a standard product which can be purchased by systems manufacturers in a "blank" state and, thereafter, custom-configured into a virtually unlimited number of specific logic functions by programming the device with electrical signals. In these programmable logic devices, logic signals are routed between various elements, such as input/output (I/O) pads and logic arrays, during operation. According to previously developed techniques, a number of uni-directional buses are used to perform this routing. Each of these uni-directional buses is supported by its own respective wires, multiplexers, and drivers. Despite the numerous supporting circuit elements, however, each uni-directional bus can only be driven by a single element--i.e., only one element can place signals onto a particular bus. Thus, even for programmable logic devices having a relatively small number of elements, the surface area required to implement the necessary routing circuitry according to previous techniques can be significant.
In addition to problems of surface area, programmable logic devices implemented according to previously developed techniques also experience problems with performance. For example, in these logic devices, a signal may require multiple sources, each driven by a single element. A multiplexer must be implemented to select from one of these different sources. Additional delay is created by these multiplexers. Accordingly, the performance of these programmable logic devices suffers.